package com.shujia.scala

import scala.io.Source

object Demo20WodCount {
  def main(args: Array[String]): Unit = {

    /**
      * 统计单词的数量
      *
      */

    //1、读取文件

    val lines: List[String] = Source.fromFile("scala/data/words.txt").getLines().toList


    //2、将每一行中的多个单词拆分出来
    val words: List[String] = lines.flatMap(line => line.split(","))

    /**
      * groupBy ： 通过每一列分组，等到一个map集合，map的key 是分组的列，map的value 是当前key所有的value
      *
      */

    //3、通过单词进行分组
    val groupMap: Map[String, List[String]] = words.groupBy(word => word)


    //4、统计单词的数量
    val count: Map[String, Int] = groupMap.map(kv => {

      val word: String = kv._1
      val values: List[String] = kv._2


      //计算单词的数量
      val length: Int = values.length


      //返回单词和数量
      (word, length)
    })

    count.foreach(println)



    //链式调用

    Source
      .fromFile("scala/data/words.txt")
      .getLines()
      .toList
      .flatMap(_.split(","))
      .groupBy(word => word)
      .map(kv => (kv._1, kv._2.length))
      .foreach(println)


  }

}
